﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FirmaKurierska.Areas.Admin.Models;
using FirmaKurierska.Models;

namespace FirmaKurierska.Areas.Admin.Controllers
{
    public class CentraleController : Controller
    {
        /// <summary>
        /// Połączenie z bazą danych
        /// </summary>
        private PlacowkaEntities db = new PlacowkaEntities();

        /// <summary>
        /// Wyświetlenie listy centrali
        /// </summary>
        /// <returns>Lista centrali</returns>
        public ActionResult Index()
        {
            return View(db.Centrale.ToList());
        }
       
        /// <summary>
        /// Wyświetla szczegóły dla konkretnej centrali
        /// </summary>
        /// <param name="id">Id centrali - POST z widoku</param>
        /// <returns>Model konkretnej centrali</returns>
        public ActionResult Details(int id = 0)
        {
            FirmaKurierska.Models.Centrale centrale = db.Centrale.Find(id);
            if (centrale == null)
            {
                return HttpNotFound();
            }
            return View(centrale);
        }       

        /// <summary>
        /// Wyświetla widok do tworzenia nowej centrali
        /// </summary>
        /// <returns>Formularz do tworzenia centrali</returns>
        public ActionResult Create()
        {
            return View();
        }

        /// <summary>
        /// Stworzenie nowej centrali
        /// </summary>
        /// <param name="centrale">Model centrali</param>
        /// <returns>Widok wszyskich centrali</returns>
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(FirmaKurierska.Models.Centrale centrale)
        {
            if (ModelState.IsValid)
            {
                db.Centrale.Add(centrale);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(centrale);
        }
     
        /// <summary>
        /// Wyświetla panel edycji centrali
        /// </summary>
        /// <param name="id">Id centrali - post z widoku</param>
        /// <returns>Widok szczegółów centrali</returns>
        public ActionResult Edit(int id = 0)
        {
            FirmaKurierska.Models.Centrale centrale = db.Centrale.Find(id);
            if (centrale == null)
            {
                return HttpNotFound();
            }
            return View(centrale);
        }
     
        /// <summary>
        /// Zmiana parametrów centrali
        /// </summary>
        /// <param name="centrale">Model centrali</param>
        /// <returns>Widok wszystkich centrali</returns>
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit(FirmaKurierska.Models.Centrale centrale)
        {
            if (ModelState.IsValid)
            {
                db.Entry(centrale).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(centrale);
        }
    }
}